home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / Sessions / Completions / Completions Source / Execution Queues / FakeDeferredTaskQueue.cp < prev    next >
Encoding:
Text File  |  1998-06-15  |  1.1 KB  |  55 lines  |  [TEXT/CWIE]

  1. // FakeDeferredTaskQueue.cp
  2.  
  3. #ifndef FakeDeferredTaskQueue_h
  4. #include "FakeDeferredTaskQueue.h"
  5. #endif
  6. #ifndef Assert_h
  7. #include "Assert.h"
  8. #endif
  9. #ifndef OSError_h
  10. #include "OSError.h"
  11. #endif
  12.  
  13. FakeDeferredTaskQueue::FakeDeferredTaskQueue()
  14.   {
  15.     head.qFlags = 0;
  16.     head.qHead = 0;
  17.     head.qTail = 0;
  18.   }
  19.  
  20. FakeDeferredTaskQueue& FakeDeferredTaskQueue::The()
  21.   {
  22.     static FakeDeferredTaskQueue the;
  23.     return the;
  24.   }
  25.  
  26. void FakeDeferredTaskQueue::Install( DeferredTask& task )
  27.   {
  28.     Assert( task.qType == dtQType );
  29.     Assert( task.dtFlags == 0 );
  30.     Assert( task.dtAddr != 0 );
  31.     Assert( task.dtReserved == 0 );
  32.     
  33.     Enqueue( reinterpret_cast<QElemPtr>( &task ),
  34.                 const_cast<QHdrPtr>( &head ) );
  35.   }
  36.  
  37. void FakeDeferredTaskQueue::ExecuteAll()
  38.   {
  39.     for ( QElemPtr element = head.qHead;
  40.             element != 0;
  41.             element = head.qHead )
  42.       {
  43.         DebugOSError( Dequeue( element, const_cast<QHdrPtr>( &head ) ) );
  44.         
  45.         DeferredTask& task = *reinterpret_cast<DeferredTask*>( element );
  46.  
  47.         Assert( task.qType == dtQType );
  48.         Assert( task.dtFlags == 0 );
  49.         Assert( task.dtAddr != 0 );
  50.         Assert( task.dtReserved == 0 );
  51.         
  52.         CallDeferredTaskProc( task.dtAddr, task.dtParam );
  53.       }
  54.   }
  55.